384 DEF FNL(X)=LOG(X)/LOG(10) 'COMMON LOGARITHM OF X
388 DEF FNJULIAN(AY,AM,AD)=367*AY-INT(7*(AY+INT((AM+9)/12))/4)+INT(275*AM/9)+AD-676534! 'JULIAN DATE (MINUS 2397547.5) FOR 0000 HOURS GMT, YEARS 1900-2099.
392 '**********************LOAD SKY TEMPERATURE DATA*********************
393 FOR I%=1 TO 50
394 READ H(I%),RTEMA(I%),RTEMB(I%) 'RIGHT ASCENSION,136MHZ ,400MHZ SKY TEMPS
396 LET RTEMA(I%)=RTEMA(I%)*.87 '144 MHZ SKY TEMP IN DEGREES KELVIN
398 LET RTEMB(I%)=RTEMB(I%)*.83 '432 MHZ SKY TEMP IN DEGREES KELVIN
400 NEXT I%
410 DATA 0,275,24,.5,300,24.5,1,320,25,1.5,340,25.5,2,350,27
420 DATA 2.5,400,29,3,425,30,3.5,400,28,4,425,30.5,4.5,460,34.5
430 DATA 5,500,37.5,5.5,575,45,6,575,44.5,6.5,475,37.5,7,425,32
440 DATA 7.5,350,25.5,8,260,19.5,8.5,230,17.5,9,200,15,9.5,210,15.5
450 DATA 10,215,16.5,10.5,225,17.5,11,235,18,11.5,245,19,12,300,22.5
460 DATA 12.5,360,27.5,13,360,27.5,13.5,350,25,14,375,27,14.5,415,30
470 DATA 15,450,32.5,15.5,480,35,16,550,39,16.5,700,45,17,1000,55
480 DATA 17.5,1850,110,18,3800,180,18.5,2400,160,19,1000,80,19.5,600,52
490 DATA 20,425,32,20.5,375,28.5,21,375,27.5,21.5,375,27.5,22,340,25
500 DATA 22.5,280,22,23,280,22.5,23.5,275,23,24,275,23.5,24.5,300,24.5
680 '*******************START OF DATA INPUT SECTION******************
690 CLS
700 INPUT "What is the CALLSIGN";CSIGN$
705 IF CSIGN$=YCSIGN$ OR CSIGN$="" THEN 711 ELSE 725
711 LET ULATDP=YLATDP 'DEFAULTS TO YOUR LATITUDE
712 LET ULONDP=YLONDP 'DEFAULTS TO YOUR LONGITUDE
713 IF CSIGN$=YCSIGN$ THEN 770 'GIVES YOU A CHANCE TO USE PROMPTS
714 LET CSIGN$=YCSIGN$ 'DEFAULTS TO YOUR CALL,SKIPS PROMPTS ON BLANK ENTRY
720 GOTO 1150
725 LET FIRST=ASC(LEFT$(CSIGN$,1))
726 IF FIRST>90 OR FIRST<48 THEN 728
727 IF FIRST>57 AND FIRST<65 THEN 728 ELSE 760
728 LET LCALL=LEN(CSIGN$)
729 LET X=0
730 IF LCALL=7 THEN 740
732 IF LCALL=5 THEN 733 ELSE 736
733 LET CSIGN$=CSIGN$+"MM"
734 GOTO 742
736 IF LCALL=3 THEN LET CSIGN$=CSIGN$+"55MM" ELSE 700
737 GOTO 742
740 LET X=.5
742 LET CSIGN$=RIGHT$(CSIGN$,6)
745 LET ULONDP=180-(ASC(MID$(CSIGN$,1,1))-65)*20-(VAL(MID$(CSIGN$,3,1)))*2-((ASC(MID$(CSIGN$,5,1))-65)+X)/12 'LONGITUDE FROM LOCATOR
750 LET ULATDP=-90+(ASC(MID$(CSIGN$,2,1))-65)*10+VAL(MID$(CSIGN$,4,1))+((ASC(MID$(CSIGN$,6,1))-65)+X)/24 'LATITUDE FROM LOCATOR
755 GOTO 770
760 INPUT "What is the LATITUDE in DEG,MIN,SEC (+ for north)";ULATDP,ULATMP,ULATSP
765 INPUT "What is the LONGITUDE in DEG,MIN,SEC (+ for west)";ULONDP,ULONMP,ULONSP
770 INPUT "Do you only want printout near the horizon";ANS1$
780 IF ANS1$="" THEN 1150 'SKIP ALL THE PROMPTS ON A BLANK ENTRY TO THIS
790 IF ANS1$= "YES" THEN 800 ELSE 850
800 INPUT "Below what elevation in degrees do you want printout";BELEV
850 INPUT "Do you want printout only during north declination";ANS2$
860 INPUT "What moon activity window definition do you want (IARU Region #)";REGION
870 INPUT "Do you want printout only during European window";ANS3$
890 INPUT "Do you want printout only during N. American window";ANS4$
910 INPUT "Do you want printout only during the Asian window";ANS5$
970 INPUT "Do you only want printout on GMT weekends";ANS8$
975 INPUT "Do you also want your own moon positions printed";ANS9$
980 INPUT "Do you want printout only between specific times";ANS6$
990 IF ANS6$="YES" THEN 1030 ELSE 1090
1030 INPUT "What are GMT beginning,ending times";B1,E
1090 INPUT "What is desired printout increment in minutes";DINC
1130 INPUT "How many estimated positions do you want between calcs";NEST$
1150 INPUT "What is beginning date (YY,MM,DD)";AY1,AM1,AD1
1210 INPUT "What is the ending date (YY,MM,DD)";EY,EM,ED
1220 '*********************END OF DATA INPUT SECTION******************
1225 LET ULATD=ULATDP+SGN(ULATDP)*ABS(ULATMP)/60+SGN(ULATDP)*ABS(ULATSP)/3600
1230 LET ULATDP=INT(ABS(ULATDP))
1231 LET ULATMP=INT((ABS(ULATD)-INT(ABS(ULATD)))*60)
1232 LET ULATSP=INT((((ABS(ULATD)-INT(ABS(ULATD)))*60)-ULATMP)*60+.5)
1233 LET ULOND=ULONDP+SGN(ULONDP)*ABS(ULONMP)/60+SGN(ULONDP)*ABS(ULONSP)/3600
1234 LET ULONDP=INT(ABS(ULONDP))
1235 LET ULONMP=INT((ABS(ULOND)-INT(ABS(ULOND)))*60)
1236 LET ULONSP=INT((((ABS(ULOND)-INT(ABS(ULOND)))*60)-ULONMP)*60+.5)
1237 IF ULOND>-80 AND ULOND=<40 AND REGION<1 THEN LET REGION=1
1238 IF ULOND>40 AND ULOND=<160 AND REGION<1 THEN LET REGION=2
1239 IF ULOND>160 OR ULOND<=-80 AND REGION<1 THEN LET REGION=3
1240 GOSUB 3080
1241 LET ULATD=ULATD*RAD
1242 LET YLATD=YLATDP*RAD
1243 LET ULOND=ULOND*RAD
1244 LET YLOND=YLONDP*RAD
1246 IF ULATD>0 THEN LET LA$="N" ELSE LET LA$="S"
1247 IF ULOND>0 THEN LET LO$="W" ELSE LET LO$="E"
1248 LET BELEV=BELEV*RAD
1249 IF BELEV=0 THEN LET BELEV=100/DEG
1251 LET AY1=AY1+1900
1252 LET EY=EY+1900
1255 LET LON=ULOND
1256 LET LAT=ULATD
1260 IF DINC=<1.99 THEN LET DINC=15
1265 IF NEST$="" THEN LET NEST=NESTS ELSE LET NEST=VAL(NEST$)
1268 IF ANS3$><"YES" AND ANS4$><"YES" AND ANS5$><"YES" THEN LET FLAG3=0 ELSE LET FLAG3=1
1270 LET MPOS=-1 'NO CALCULATIONS DONE YET
1280 LET FLAG4=0 'NO SETTING HORIZON WINDOW TIMES CALCULATED YET
1291 LET BJUL=FNJULIAN(AY1,AM1,AD1)
1292 LET EJUL=FNJULIAN(EY,EM,ED)
1295 LET DATEJ=BJUL-14
1296 FOR I=1 TO 13
1297 LET DATEJ=DATEJ+1
1298 GOSUB 3800
1299 NEXT I
1300 LET DATEJ=BJUL
1310 '****************START OF MAIN CALCULATING LOOP**********************
1311 GOSUB 2993 'CALCULATE DAY OF THE WEEK
1312 GOSUB 3800 'CALCULATE MOON DISTANCE AND PATH LOSS
1313 IF ANS8$="YES" THEN 1314 ELSE 1320
1314 IF WKDAY=1 OR WKDAY=7 THEN 1320 ELSE 1315
1315 LET MPOS=-1
1316 LET FLAG4=0
1317 GOTO 2580
1320 GOSUB 3700
1322 LET T3=DATEJ-35735!
1323 LET A=.0657098232#*T3
1328 LET FLAG1=2 'NO CALCULATIONS DONE YET
1330 IF MPOS<1 OR EL>0 THEN 1400
1340 IF B1>RTIME THEN 1390
1350 LET B=RTIME
1360 LET FLAG2=NEST
1370 LET MPOS=0 'MOON ABOUT TO RISE-PREPARE TO RESET RTIME WHEN IT RISES
1380 GOTO 1410
1390 LET MPOS=0
1400 LET B=B1
1410 IF FLAG4=3 THEN 1411 ELSE 1420
1411 LET B=STIME
1412 LET FLAG2=NEST
1413 LET FLAG4=1 'READY TO RESET STIME WHEN MOON COMES DOWN INTO HORIZON WINDOW
1414 IF B1>STIME THEN LET B=B1
1420 LET DIF1=B-INT(B/100+.5)*100+INT(B/100+.5)*60-(E-INT(E/100+.5)*100+INT(E/100+.5)*60)
1430 IF DIF1>0 THEN 1440 ELSE 1470
1440 IF DIF1<DINC THEN 1450 ELSE 2580
1450 LET B=E
1470 LET T=(B-INT(B/100)*100)/1440+INT(B/100)/24 'FRACTION OF THE DAY
1475 LET SUNRA=SUNRAS+T*.0186625# 'ESTIMATE RIGHT ASCENSION OF THE SUN
1476 IF SUNRA>TUPI THEN LET SUNRA=SUNRA-TUPI
1480 IF FLAG1<2 THEN 1490 ELSE 1530
1490 IF FLAG2<NEST THEN 1500 ELSE 1530
1500 LET FLAG2=FLAG2+1
1505 LET EST$=" "
1510 LET GAST=GAST+.016677*DINC 'ESTIMATE GREENWICH APPARENT SIDEREAL TIME
1515 LET RA=RA+DINC*.00016 'ESTIMATE LUNAR RIGHT ASCENSION
1520 GOTO 1775
1525 '*********CALCULATION OF LATITUDE AND LONGITUDE OF THE MOON***********
1530 LET FLAG2=0
1535 LET EST$=CHR$(250) 'PRINTS OUT A DOT AFTER WINDOW FIELD FOR REAL CALCS
1540 LET T5=DATEJ-17472.5#+T
1550 LET D1=FNC(.751213#+.036601102# *T5)
1560 LET D2=FNC(.822513#+.0362916457# *T5)
1570 LET D3=FNC(.995766#+.00273777852# *T5)
1580 LET D4=FNC(.974271#+.0338631922# *T5)
1590 LET D5=FNC(.0312525#+.0367481957# *T5)
1600 LET DLON=D1+RAD*(.658*SIN(2*D4)+6.289*SIN(D2)-1.274*SIN(D2-2*D4)-.186*SIN(D3)+.214*SIN(2*D2)-.114*SIN(2*D5)-.059*SIN(2*D2-2*D4)-.057*SIN(D2+D3-2*D4))
1610 LET S=D5+RAD*(.6593*SIN(2*D4)+6.2303*SIN(D2)-1.272*SIN(D2-2*D4))
1620 LET DLAT=RAD*(5.144*SIN(S)-.146*SIN(D5-2*D4))
1630 '**************CALCULATION OF RIGHT ASCENSION AND DECLINATION**********
1640 LET DEC1=COS(DLAT)*SIN(DLON)*.397821+SIN(DLAT)*.917463
1650 LET DEC2=ABS(DEC1)
1660 LET DEC=FNATAN2(DEC1,SQR(1-DEC2*DEC2))
1670 IF ANS2$="YES" OR FLAG3=1 THEN 1680 ELSE 1690
1680 IF DEC<0 THEN 1970
1690 LET RAC=COS(DLAT)*COS(DLON)/COS(DEC)
1700 LET RAS=(COS(DLAT)*SIN(DLON)*.917463-SIN(DLAT)*.397821)/COS(DEC)
1710 LET RA=FNATAN2(RAS,RAC)
1745 '*************CALCULATION OF GREENWICH APPARENT SIDEREAL TIME***********
1750 LET GMST=6.67170278#+(A-INT(A/24)*24)+1.0027379093#*T*24 'GREENWICH MEAN SIDEREAL TIME IN HOURS
1755 LET OMEGA=(372.1133#-.0529539#*(T3+T))*RAD
1760 LET OMEGA=OMEGA-INT(SGN(OMEGA)*OMEGA/TUPI)*TUPI*SGN(OMEGA)
1765 IF ABS(OMEGA)<PI THEN LET OMEGA=OMEGA-TUPI*SGN(OMEGA)
1770 LET GAST=GMST+.00029*SIN(OMEGA) 'GREENWICH APPARENT SIDEREAL TIME IN HRS.
1775 LET GAST=GAST-INT(GAST/24)*24
1780 IF RA<0 THEN LET RA=TUPI+RA
1781 IF RA>TUPI THEN LET RA=RA-TUPI
1790 GOSUB 4000 'CALCULATE GHA AND ELEVATION
1800 IF EL<0 THEN 2090 ELSE 1840
1840 '*****************CHECK TO SEE WHAT WINDOW MOON IS IN******************
1845 LET MOONWINDOW$ = " "
1850 IF DEC<O THEN 1960
1855 ON REGION GOSUB 4200,4300,4400
1930 IF MOONWINDOW$="E" AND ANS3$="YES" THEN 2050
1940 IF MOONWINDOW$="N" AND ANS4$="YES" THEN 2050
1950 IF MOONWINDOW$="A" AND ANS5$="YES" THEN 2050
1960 IF FLAG3=0 THEN 2050 ELSE 1970
1970 IF DEC<-.1047 THEN 1315 ELSE 2530
1980 '**************CHECK FLAGS FOR MOONRISES AND SETS*********************
2050 IF MPOS=0 THEN 2060 ELSE 2140
2060 LET MPOS=1 ' MOON HAS JUST RISEN-SET RTIME
2070 LET RTIME=B
2080 GOTO 2140
2090 IF MPOS<0 THEN 2110 ELSE 2100
2100 IF MPOS=0 THEN 2530 ELSE 2130
2110 LET MPOS=0 'MOON HAS BEEN CALCULATED TO BE BELOW HORIZON-WAITING NOW TO CALCULATE FIRST RISE TIME
2120 GOTO 2530
2130 IF RTIME>B THEN 1350 ELSE 2580 'JUMP TO NEXT RISE TIME
2140 IF EL<=BELEV THEN 2160
2145 IF FLAG4=2 THEN 2151 ELSE 2146 'MOON UP BUT NOT IN DESIRED HORIZON WINDOW-CHECK TO SEE IF A SET TIME HAS BEEN DETERMINED
2146 IF MPOS=1 THEN LET FLAG4=1 'PREPARE TO SET STIME WHEN MOON COMES DOWN INTO HORIZON WINDOW
2147 GOTO 2530
2151 LET FLAG4=3 'READY TO JUMP AHEAD TO SETTING HORIZON
2153 IF STIME>B THEN 1410 ELSE 2580
2160 IF MPOS=1 AND FLAG4=1 THEN 2170 ELSE 2210
2170 LET FLAG4=2 'MOON HAS RISEN ONCE AND STIME IS BEING SET
2180 LET STIME=B 'TIME AT WHICH MOON COMES DOWN BELOW CHOSEN ELEVATION
2210 GOSUB 4100 'CALCULATE AZIMUTH OF THE MOON
2255 '*************************CHECK FOR NEW MOON**************************
2256 LET RADIF=ABS(RA-SUNRA)
2257 IF RADIF>PI THEN LET RADIF=ABS(RADIF-TUPI)
2258 IF RADIF<.1134464 THEN LET NEWMOON$="NM" ELSE LET NEWMOON$=" " 'SEE IF SUN IS WITHIN 6.5° OF MOON
2270 IF FLAG1<2 THEN 2390 ELSE 2271
2271 '*************************PRINT OUT HEADINGS************************
2280 LET NM1=INT(AM1)
2305 GOSUB 3500 'DETERMINE MONTH OF THE YEAR
2310 LPRINT CHR$(12) 'FORM FEED
2320 LPRINT MO$;:LPRINT USING " ##_,";INT(AD1);:LPRINT USING "####";INT(AY1);:LPRINT TAB(18);:LPRINT USING "###_°";ULATDP;:LPRINT USING "##_'";ULATMP;:LPRINT USING "##";ULATSP;:LPRINT CHR$(34); " "; LA$;TAB(32);"MOON POSITION FOR ";CSIGN$;TAB(62);
2325 LPRINT TAB(62);"RANGE: ";:LPRINT USING " ###,### _K_M";RANGE
2330 LPRINT WKDAY$;TAB(18);:LPRINT USING "###_°";ULONDP;:LPRINT USING "##_'";ULONMP;:LPRINT USING "##";ULONSP;:LPRINT CHR$(34); " "; LO$ ;TAB(34);"(PRINTED BY ";YCSIGN$;")";TAB(62);GEE$;TAB(63);:LPRINT USING "_+## _D_A_Y_S";PDAYS;
2390 '**********************PRINT OUT DATA*******************************
2395 IF T-FLAG1<2*DINC/1440 THEN 2410
2400 LPRINT 'LINE FEED IF MOON HAS SET PREVIOUSLY
2410 LET NB=INT(B*10+.5)/10
2412 LET H$=""
2413 IF NB<1000 THEN LET H$="0"
2414 IF NB<100 THEN LET H$="00"
2415 IF NB<10 THEN LET H$="000"
2416 LET GMT$=H$+RIGHT$(STR$(NB),(LEN(STR$(NB))-1))
2460 LET RAH=RA/TUPI*24
2470 LET IRAP1=INT(RAH)
2480 LET IRAP2=INT((RAH-IRAP1)*60)
2490 GOSUB 3015 'CALCULATE SKY TEMPS AND DB INDICES
2491 IF ANS9$= "YES" THEN 2492 ELSE 2507
2492 LPRINT GMT$;TAB(7);NEWMOON$;TAB(17);MOONWINDOW$;EST$;:LPRINT USING " ###.# ";FNA(AZ),FNA(EL);:LPRINT USING " ###.# ";FNA(DEC);
2493 LET LAT=YLATD
2494 LET LON=YLOND
2495 GOSUB 4000
2496 IF EL>= 0 THEN 2497 ELSE 2500
2497 GOSUB 4100
2498 LPRINT USING " ###.# ";FNA(AZ),FNA(EL);
2500 LET LAT=ULATD
2501 LET LON=ULOND
2506 GOTO 2508
2507 LPRINT GMT$;TAB(7);NEWMOON$;TAB(17);MOONWINDOW$;EST$;:LPRINT USING " ###.# ";FNA(AZ),FNA(EL);:LPRINT USING " ###.# ";FNA(GHA),FNA(DEC);:LPRINT USING " ##_H";IRAP1;:LPRINT USING " ##_M";IRAP2;
2508 IF NEWMOON$="NM" THEN 2511 ELSE 2526
2511 LET MR=RA
2512 LET MD=DEC
2513 LET RA=SUNRA
2514 LET DEC=SUNDEC
2515 LET FLAG5=1
2516 GOSUB 4000
2517 IF EL>=0 THEN 2518 ELSE 2521
2518 GOSUB 4100
2519 LPRINT TAB(61);:LPRINT USING "####.# _A_Z";FNA(AZ);:LPRINT USING " ###.# _E_L";FNA(EL)
2520 GOTO 2522
2521 LPRINT TAB(62);"SUN BELOW HORIZON"
2522 LET RA=MR
2523 LET DEC=MD
2524 LET FLAG5=0
2525 GOTO 2529
2526 LPRINT TAB(61);:LPRINT USING "####";KTEMPA;:LPRINT USING "###.#";FNR(DBA,10);:LPRINT USING " ###";KTEMPB;:LPRINT USING " ###.#";FNR(DBB,10)
2529 LET FLAG1=T
2530 LET B=FNR(B+DINC,1000)
2540 LET Z=B-INT(B/100)*100-60
2550 IF Z<0 THEN 1420 ELSE 2560
2560 LET B=INT(B/100)*100+100+Z
2570 GOTO 1420
2580 GOSUB 2790
2590 LET DATEJ=FNR(DATEJ,10)
2610 IF DATEJ-EJUL>.5 THEN 2620 ELSE 1310
2620 LPRINT CHR$(12)
2625 LPRINT CHR$(12)
2630 GOTO 6000
2790 '****SUBROUTINE TO INCREMENT DAY AND CORRECT DATE FOR MONTH AND YEAR****
2800 IF AD1<28 THEN 2980 ELSE 2810
2810 IF AM1=2 THEN 2820 ELSE 2860
2820 IF AY1=400*INT(AY1/400) THEN 2850 ELSE 2830
2830 IF AY1=100*INT(AY1/100) THEN 2950 ELSE 2840
2840 IF AY1=4*INT(AY1/4) THEN 2850 ELSE 2950
2850 IF AD1<29 THEN 2980 ELSE 2950
2860 IF AD1<30 THEN 2980 ELSE 2870
2870 IF AD1=30 THEN 2880 ELSE 2920
2880 IF AM1=4 THEN 2950 ELSE 2890
2890 IF AM1=6 THEN 2950 ELSE 2900
2900 IF AM1=9 THEN 2950 ELSE 2910
2910 IF AM1=11 THEN 2950 ELSE 2980
2920 IF AM1=12 THEN 2930 ELSE 2950
2930 LET AY1=INT((AY1+1)*100+.5)/100
2940 LET AM1=0
2950 LET AD1=1
2960 LET AM1=AM1+1
2970 GOTO 2990
2980 LET AD1=AD1+1
2990 LET DATEJ=DATEJ+1 ' NOW ALSO INCREASE JULIAN DATE BY ONE DAY
2991 RETURN
2992 '********************SUBROUTINE TO CALCULATE GMT DAY OF THE WEEK**********
2993 LET WKDAY=1+DATEJ-INT(DATEJ/7)*7
2994 ON WKDAY GOTO 2995,2997,2999,3001,3003,3005,3007
2995 LET WKDAY$="SUNDAY"
2996 GOTO 3008
2997 LET WKDAY$="MONDAY"
2998 GOTO 3008
2999 LET WKDAY$="TUESDAY"
3000 GOTO 3008
3001 LET WKDAY$="WEDNESDAY"
3002 GOTO 3008
3003 LET WKDAY$="THURSDAY"
3004 GOTO 3008
3005 LET WKDAY$="FRIDAY"
3006 GOTO 3008
3007 LET WKDAY$="SATURDAY"
3008 RETURN
3015 '********SUBROUTINE TO CALCULATE BACKGROUND SKY TEMPERATURE**********
3016 LET DBR=.0000451906#*((RANGE-PRANGE)*(T-.5)+RANGE)-16.3636 'DB DEGRADATION FROM MOON DISTANCE, COMPARED TO PERIGEE
3020 FOR I%=2 TO 50
3025 IF H(I%)>RAH THEN 3050
3030 NEXT I%
3050 LET KTEMPA=INT((RTEMA(I%)-RTEMA(I%-1))/.5*(RAH-H(I%-1))+RTEMA(I%-1))
3070 LET KTEMPB=INT((RTEMB(I%)-RTEMB(I%-1))/.5*(RAH-H(I%-1))+RTEMB(I%-1))
3071 LET DBA=DBR+10*FNL((TEMRA+KTEMPA)/(TEMRA+174)) '144 MHZ DB INDEX
3072 LET DBB=DBR+10*FNL((TEMRB+KTEMPB)/(TEMRB+12.45)) '432 MHZ DB INDEX
3073 RETURN
3075 RETURN
3080 '******SUBROUTINE TO CALCULATE LOCATOR FROM LAT & LON IN DEGREES******
3081 IF ULATD=90 THEN LET LOCATOR$="N POLE"
3082 IF ULATD=-90 THEN LET LOCATOR$="S POLE"
3083 IF LOCATOR$="" THEN 3084 ELSE 3100
3084 IF ULOND=-180 THEN LET ULOND=180
3085 LET ZLO=(180-ULOND)/20
3086 LET ZLA=(ULATD+90)/10
3087 LET ZA=INT(ZLO)
3088 LET ZB=INT(ZLA)
3089 LET ZLO=(ZLO-ZA)*10
3090 LET ZLA=(ZLA-ZB)*10
3091 LET ZC=INT(ZLO)
3092 LET ZD=INT(ZLA)
3095 LET LOCATOR$=CHR$(65+ZA)+CHR$(65+ZB)+CHR$(48+ZC)+CHR$(48+ZD)+CHR$(65+INT((ZLO-ZC)*24))+CHR$(65+INT((ZLA-ZD)*24))
3100 RETURN
3500 '***********SUBROUTINE TO DETERMINE MONTH OF THE YEAR******************
3511 IF NM1=1 THEN LET MO$="JAN"
3512 IF NM1=2 THEN LET MO$="FEB"
3513 IF NM1=3 THEN LET MO$="MAR"
3514 IF NM1=4 THEN LET MO$="APR"
3515 IF NM1=5 THEN LET MO$="MAY"
3516 IF NM1=6 THEN LET MO$="JUN"
3517 IF NM1=7 THEN LET MO$="JUL"
3518 IF NM1=8 THEN LET MO$="AUG"
3519 IF NM1=9 THEN LET MO$="SEP"
3520 IF NM1=10 THEN LET MO$="OCT"
3521 IF NM1=11 THEN LET MO$="NOV"
3522 IF NM1=12 THEN LET MO$="DEC"
3550 RETURN
3700 '***CALCULATION OF SUN'S RIGHT ASCENSION AND DECLINATION AT 0 HRS GMT*****
3733 IF LANGLE<PI*1.5 AND LANGLE>=PI/2 THEN LET SUNRA=SUNRA+PI
3735 LET SUNRAS=SUNRA-INT(SUNRA/TUPI)*TUPI
3740 LET SUNDEC=SIN(EPSILON)*SIN(SUNLON)
3741 LET SUNDEC=FNATAN2(SUNDEC,SQR(1-SUNDEC*SUNDEC))
3745 RETURN
3800 '*****SUBROUTINE TO CALCULATE GEOCENTRIC MOON DISTANCE AT GMT NOON******
3801 LET PRANGE=RANGE
3803 LET T8=(DATEJ-53997!) 'TIME AT NOON
3804 LET F2=FNC(.374897#+.03629164709#*T8)
3805 LET F3=FNC(.259091#+.0367481952#*T8)
3806 LET F4=FNC(.827362#+.03386319198#*T8)
3808 LET F8=FNC(.993126#+.0027377785#*T8)
3810 LET RANGE=60.36298-3.27746*COS(F2)-.57994*COS(F2-2*F4)-.46357*COS(2*F4)-8.904001E-02*COS(2*F2)+.03865*COS(2*F2-2*F4)-.03237*COS(2*F4-F8)-.02688*COS(F2-2*F4)-.02358*COS(F2-2*F4+F8)-.0203*COS(F2-F8)+.01719*COS(F4)+.01671*COS(F2+F8)
3815 LET RANGE1=.01247*COS(F2-2*F3)+.00704*COS(F8)+.00529*COS(2*F4+F8)-.00524*COS(F2-4*F4)+.00398*COS(F2-2*F4-F8)-.00366*COS(3*F2)-.00295*COS(2*F2-4*F4)-.00263*COS(F4+F8)+.00249*COS(3*F2-2*F4)-.00221*COS(F2+2*F4-F8)+.00185*COS(2*F3-2*F4)
3816 LET RANGE2=-.00161*COS(2*F4-2*F8)+.00147*COS(F2+2*F3-2*F4)-.00142*COS(4*F4)+.00139*COS(2*F2-2*F4+F8)-.00118*COS(F2-4*F4+F8)-.00116*COS(2*F2+2*F4)-.0011*COS(2*F2-F8)
3817 LET RANGE=RANGE+RANGE1+RANGE2
3820 LET SEMIDIA=936.74867#/RANGE 'GEOCENTRIC SEMIDIAMETER IN MINUTES OF ARC
3825 LET RANGE=RANGE*6378.16 'CHANGE DISTANCE FROM EQUATORIAL EARTH RADII TO KM
3840 IF PRANGE>RANGE THEN 3860
3842 'MOON GETTING FARTHER FROM EARTH
3843 IF GEE$<>"P" THEN 3846 ELSE 3870
3846 LET GEE$="P"
3848 GOTO 3866
3860 'MOON GETTING CLOSER TO EARTH
3862 IF GEE$<>"A" THEN 3864 ELSE 3870
3864 LET GEE$="A"
3866 LET PDAYS=0
3870 LET PDAYS=PDAYS+1
3900 RETURN
4000 '******************SUBROUTINE TO CALCULATE ELEVATION*********************
4002 LET GHA=GAST*.2617994-RA
4004 IF GHA<0 THEN 4005 ELSE 4006
4005 LET GHA=GHA+TUPI
4006 IF GHA>TUPI THEN LET GHA=GHA-TUPI
4013 LET UHA= LON -GHA
4014 LET ELSIN=COS( LAT )*COS(UHA)*COS(DEC)+SIN(DEC)*SIN( LAT )
4015 LET ELCOS=SQR(1-ELSIN*ELSIN)
4016 LET EL=FNATAN2(ELSIN,ELCOS) 'UNCORRECTED ELEVATION
4017 IF FLAG5=1 THEN 4025
4018 LET ELCORS=6378.16*COS(EL)
4019 LET ELCORC=RANGE-6378.16*SIN(EL)
4020 LET ELCORD=FNATAN2(ELCORS,ELCORC) 'CORRECTION FACTOR DUE TO EARTH DIAMETER
4021 LET EL=EL-ELCORD
4025 LET FEL=EL
4029 IF EL<0 OR EL>.27925 THEN 4050 'SKIP ATMOS CORRECTION
4030 LET ZD=PI/2-EL
4032 LET SINREF=.9986047*SIN(.9967614*ZD)
4034 LET SINREF=FNATAN2(SINREF,SQR(1-SINREF*SINREF))
4035 LET ELCORA=1.04329E-03*(196.5411*(ZD-SINREF)-.6393802*ZD) 'VISIBLE ATMOSPHERIC REFRACTION CORRECTION FACTOR AT 50°F AND 1015 MB PRESSURE
4040 LET EL=EL-ELCORA
4050 RETURN
4100 '******************SUBROUTINE TO CALCULATE AZIMUTH***********************
4110 LET AZCOS=SIN(DEC)/(COS(LAT)*COS(FEL))-SIN(LAT)/COS(LAT)*(SIN(FEL)/COS(FEL))
4120 LET AZSIN=SIN(LAT)*SIN(DEC)+COS(LAT)*COS(DEC)*COS(UHA)
4130 LET AZSIN=SIN(UHA)*COS(DEC)/SQR(1-AZSIN*AZSIN)
4140 LET AZ=FNATAN2(AZSIN,AZCOS)
4150 IF AZ<=0 THEN LET AZ=AZ+TUPI
4160 RETURN
4200 '******SUBROUTINE TO DETERMINE MOON WINDOW FOR IARU REGION 1 STATIONS*****
4205 IF GHA<PI THEN 4245
4210 'CHECK TO SEE IF IN ASIAN WINDOW (2 HOURS FOLLOWING FRANKFURT MOONRISE)
4220 IF DEC=>-.74545*GHA+3.421194 AND DEC=<-.74545*GHA+3.799083 THEN LET MOONWINDOW$="A"
4230 'CHECK TO SEE IF MOON IS IN EUROPEAN WINDOW
4240 IF DEC=>-.74545*GHA+3.799083 THEN LET MOONWINDOW$="E"
4244 GOTO 4290
4245 IF DEC=>.8075099*GHA-.7186963 THEN LET MOONWINDOW$="E"
4250 'CHECK TO SEE IF MOON IS IN NORTH AMERICAN WINDOW
4260 IF DEC=<.80751*GHA-.718696 AND DEC=>.80751*GHA-1.128051 THEN LET MOONWINDOW$="N"
4290 RETURN
4300 '******SUBROUTINE TO DETERMINE MOON WINDOW FOR IARU REGION 2 STATIONS*****
4310 ' CHECK TO SEE IF IN EUROPEAN WINDOW
4320 IF DEC<=.80751*GHA-.7186963 AND DEC>=.80751*GHA-1.128051 THEN LET MOONWINDOW$="E"
4330 ' CHECK TO SEE IF IN NORTH AMERICAN WINDOW
4340 IF DEC<=.80751*GHA-1.128051 AND DEC<=-1.3572416#*GHA+3.350332 THEN LET MOONWINDOW$="N"
4350 ' CHECK TO SEE IF IN ASIAN WINDOW
4360 IF DEC>=-1.357242*GHA+3.350332 AND DEC<=-1.357242*GHA+4.038211 THEN LET MOONWINDOW$="A"
4390 RETURN
4400 '******SUBROUTINE TO DETERMINE MOON WINDOW FOR IARU REGION 3 STATIONS*****
4410 'CHECK TO SEE IF IN NORTH AMERICAN WINDOW
4420 IF DEC=>-1.357242*GHA+3.350332 AND DEC=<-1.357242*GHA+4.038211 THEN LET MOONWINDOW$="N"
4430 'CHECK TO SEE IF IN ASIAN WINDOW
4440 IF DEC=>-1.357242*GHA+4.038211 AND DEC=<-.74545*GHA+3.421194 THEN LET MOONWINDOW$="A"
4450 'CHECK TO SEE IF IN EUROPEAN WINDOW
4460 IF DEC=>-.74545*GHA+3.421194 AND DEC=<-.74545*GHA+3.799083 THEN LET MOONWINDOW$="E"